In recent years, a data amount has been explosively increased in a computer system for executing applications using Web, and there are known various systems for improving accessibility to data by distributing the data to a plurality of computers. For example, in an RDBMS (Relational DataBase Management System), there is known a method for improving accessibility of an entire system by partitioning data by predetermined ranges and arranging the partitioned data in a plurality of computers.
As a system for use in a cache server or the like, a NoSQL (Not only SQL) database is known, such as KVS (Key Value Store) for arranging, in a plurality of computer systems, cache data having an identifier (key) of the data and a data value (value) in accordance with a predetermined distribution method.
In the KVS, various configurations can be employed, such as a configuration for storing data in a volatile storage medium capable of accessing the data at a high speed, such as a main memory, a configuration for storing data in a nonvolatile recording medium having excellent persistence in storage of data, such as an SSD (Solid State Drive) and an HDD, and a configuration in which the both configurations described above are employed.
In the configuration in which the both configurations are employed, balance between a memory store configured by unifying memories of a plurality of computers and a disk store including a nonvolatile storage medium of at least one computer can be variously changed depending on various operation policies such as a policy in which high-speed accessibility is regarded as important and a policy in which a storage performance is regarded as important.
Data in which an identifier (key) of the data and a data value (value) are paired is stored in the memory store and the disk store.
In the KVS, a cluster is configured by a plurality of servers, and parallel processing is achieved by distributing data to the servers and arranging the data in the servers. Specifically, data in each data management range (hereinafter, referred to as “data range”) managed by a corresponding server is stored in the server. Each server executes processing of the data (hereinafter, referred to as “master data”, and, hereinafter, a data range of the master data is referred to as “master data range”) included in the corresponding data range managed by the server. That is, in response to a reading request having a predetermined key, a server managing data in a data range having the key reads the data corresponding to the key. This makes it possible to improve performance of the parallel processing in the KVS by scale out.
In the KVS, in order to secure reliability of data, there is known a configuration in which a server configuring a cluster stores replicated data (hereinafter, referred to as “replicated data”, and, hereinafter, a data range of the replicated data is referred to as “replicated data range”) of data managed by another server. That is, each server is not only a master for managing data included in a predetermined data range but also a slave for holding replicated data of data managed by another server. With this, even in a case where failure occurs in a server, another server holding, as replicated data, data managed by this failed server as a master can continue processing. Thus, failure resistance can be secured.
PTL 1 discloses, as a method of holding master data in servers in the KVS described above, a technique in which increase in a load onto a single server is prevented by partitioning a master data range of a certain server and causing an adjacent server to hold the partitioned master data.